#!/usr/bin/env python
# -*- coding: utf-8 -*-

# @Time     :2020/11/24
# @Author   :Changshu
# @File     :Exercise_485.py
# 485. 最大连续1的个数

# 给定一个二进制数组， 计算其中最大连续1的个数。

'''法一：使用一个数记录最大连续1的个数，当碰到更大的记录数之后，就改变记录值
def findMaxConsecutiveOnes(nums: list) -> int:
	m=0
	count=0
	for n in nums:
		if n==0:
			m=max(m,count)
			count=0
		if n==1:
			count+=1
	return max(m,count)
'''
'''法二，使用 map 和 join 来解决此问题。
def findMaxConsecutiveOnes(nums: list) -> int:
	return max(map(len,''.join(map(str,nums)).split('0')))
'''

'''法三，以0作为隔板，用此时0的索引减去上一个0的索引'''
def findMaxConsecutiveOnes(nums: list) -> int:
	m=0
	prev=-1
	for i in range(len(nums)):
		if nums[i]==0:
			m=max(m,i-prev-1)
			prev=i
		if i==len(nums)-1:
			m=max(m,i-prev)
	return m

if __name__ == '__main__':
	nums=[1,1,0,0,1,1,1]
	# nums=[0,1,1,0,0,0,1,1,1,1,1,0,0,0,0]
	print(findMaxConsecutiveOnes(nums))